import { get, post } from '../service/http'
import { wxOpt } from "./config";
// import axios from 'axios'

/**
 * 获取企业微信jssdk签名
 * @params agentId 应用Id
 **/
export function getWxSignCorp(cb) {
  console.log('agentId', sessionStorage.getItem('agentId'))
  if (sessionStorage.getItem('agentId')) {
    // 区分 ios/android
    // var u = navigator.userAgent;
    // var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
    // let signLink
    // if (isiOS) {
    //   signLink = window.entryUrl
    // } else {
    //   signLink = document.location.href.split('#')[0]
    // }
    // 不区分 ios/android
    let signLink = document.location.href.split('#')[0]
    // alert(singLink)
    signLink = encodeURIComponent(signLink).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+')
    get(`/wechat/cp/portal/${sessionStorage.getItem('agentId')}/jsSign/?url=${signLink}`).then(rsp => {
      let sign = rsp.data;
      console.log('signature: ', sign)
      wx.config({
        beta: true, // 必须这么写，否则wx.invoke调用形式的jsapi会有问题
        debug: wxOpt.debug, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
        appId: sessionStorage.getItem('corpId'), // 必填，企业微信的corpID
        timestamp: sign.timestamp, // 必填，生成签名的时间戳
        nonceStr: sign.nonceStr, // 必填，生成签名的随机串
        signature: sign.signature, // 必填，签名，见附录1
        jsApiList: [
          'onMenuShareAppMessage',
          'onMenuShareWechat',
          'onMenuShareTimeline',
          'chooseImage',
          "showMenuItems",
          "hideMenuItems",
          "showAllNonBaseMenuItem",
          "hideAllNonBaseMenuItem",
          'showOptionMenu',
          'hideOptionMenu',
          'closeWindow'
          // 'openDefaultBrowser',
          // 'onUserCaptureScreen',
          // 'scanQRCode',
          // 'enterpriseVerify',
          // 'getNetworkType',
          // 'onNetworkStatusChange',
          // 'openLocation',
          // 'getLocation'
        ]
      });
      wx.ready(() => {
        setTimeout(() => {
          if (cb && typeof cb === "function") {
            console.log("ready");
            cb(wx);
          }
        });
      }, 500);
      wx.error(function(res) {
        console.log('config err: ', res);
      });
    });
  }
}

// 处理获取微信签名失败
function handleJsSignErr (e) {
  console.log('获取微信签名错误 e: ', e )
}

// 显示按钮列表
export function showMenuItemsCorp (menuList, cb) {
  wx.showMenuItems({
    menuList: menuList,
    complete: res => {
      console.log('==== showMenuItems complete ===: ', res)
      if (cb && typeof cb === 'function') {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    }
  })
}

// 批量隐藏功能按钮接口
export function hideMenuItemsCorp (menuList, cb) {
  wx.hideMenuItems({
    menuList: menuList,
    complete: res => {
      console.log('==== hideMenuItemsCorp complete ===: ', res)
      if (cb && typeof cb === 'function') {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    }
  })
}

// 禁止所有非基础类按钮
export function hideAllNonBaseMenuItemCorp(cb) {
  wx.hideAllNonBaseMenuItem({
    complete: res => {
      console.log('== hideAllNonBaseMenuItem complete ==: ', res)
      if (cb && typeof cb === 'function') {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    }
  })
}

// 显示所有非基础类按钮
export function showAllNonBaseMenuItemCorp(cb) {
  wx.showAllNonBaseMenuItem({
    complete: res => {
      console.log('== showAllNonBaseMenuItemCorp complete ==: ', res)
      if (cb && typeof cb === 'function') {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    }
  })
}

// 隐藏右上角菜单接口
export function hideOptionMenuCorp (cb) {
  wx.hideOptionMenu({
    complete: res => {
      console.log('== hideOptionMenuCorp complete ==: ', res)
      if (cb && typeof cb === 'function') {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    }
  })
}

// 显示右上角菜单接口
export function showOptionMenuCorp (cb) {
  wx.showOptionMenu({
    complete: res => {
      console.log('== showOptionMenuCorp complete ==: ', res)
      if (cb && typeof cb === 'function') {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    }
  })
}

// 显示右上角菜单接口
export function closeWindow () {
  wx.closeWindow()
}

// 设置分享内容， 并获取分享按钮状态
export function shareCorp({ title, desc, imgUrl, link, type }, cb) {
  // 转发到企业微信
  wx.onMenuShareAppMessage({
    title,
    desc,
    link, // 分享链接；在微信上分享时，该链接的域名必须与企业某个应用的可信域名一致
    imgUrl,
    complete: res => {
      if ((!type || type === "app") && cb && typeof cb === "function") {
        setTimeout(() => {
          cb(res);
        }, 100);
      }
    }
  });
  // 分享到微信（此接口在企业微信支持，微信客户端不支持）
  wx.onMenuShareWechat({
    title,
    desc,
    link,
    imgUrl,
    complete: res => {
      if ((!type || type === "wechat") && cb && typeof cb === "function") {
        setTimeout(() => {
          cb(res);
        }, 100);
      }
    }
  });
  // 分享到朋友圈
  wx.onMenuShareTimeline({
    title,
    link, // 分享链接；在微信上分享时，该链接的域名必须与企业某个应用的可信域名一致
    imgUrl,
    complete: res => {
      if ((!type || type === "timeline") && cb && typeof cb === "function") {
        setTimeout(() => {
          cb(res);
        }, 100);
      }
    }
  })
}

// 拍照或从手机相册中选图接口
export function chooseImage({
  count = 9, 
  sizeType = ['original', 'compressed'],
  sourceType = ['album', 'camera']
}, cb) {
  console.log('34343')
  wx.chooseImage({
    count, // 默认9
    sizeType, // 可以指定是原图还是压缩图，默认二者都有
    sourceType, // 可以指定来源是相册还是相机，默认二者都有
    defaultCameraMode: 'batch', //表示进入拍照界面的默认模式，目前有normal与batch两种选择，normal表示普通单拍模式，batch表示连拍模式，不传该参数则为normal模式。从3.0.26版本开始支持front和batch_front两种值，其中front表示默认为前置摄像头单拍模式，batch_front表示默认为前置摄像头连拍模式。（注：用户进入拍照界面仍然可自由切换两种模式）
    isSaveToAlbum: 1, //整型值，0表示拍照时不保存到系统相册，1表示自动保存，默认值是1
    success: res => {
      let localIds = res.localIds // 返回选定照片的本地ID列表，
      // andriod中localId可以作为img标签的src属性显示图片；
      // iOS应当使用 getLocalImgData 获取图片base64数据，从而用于img标签的显示（在img标签内使用 wx.chooseImage 的 localid 显示可能会不成功）
      cb(localIds)
    },
    fail: err => {
      console.log('err_chooseImage', err)
    }
  })
}

// 上传图片
export function uploadImage({ localId }, cb) {
  wx.uploadImage({
    localId: localId, // 需要上传的图片的本地ID，由chooseImage接口获得
    isShowProgressTips: 1, // 默认为1，显示进度提示
    success: res => {
      let serverId = res.serverId // 返回图片的服务器端ID
      cb(serverId)
    },
    fail: err => {
      console.log('err_uploadImage', err)
    }
  })
}

// 获取本地图片
export function getLocalImgData({ localId }, cb) {
  wx.getLocalImgData({
    localId: localId, // 图片的localID
    success: res => {
      let localData = res.localData // localData是图片的base64数据，可以用img标签显示
      cb(localData)
    }
  })
}


// 手动触发，自定义转发到企业微信会话
export function shareAppMessage({ title, desc, imgUrl, link, type }, cb) {
  wx.invoke(
    'shareAppMessage', {
      title, // 分享标题
      desc, // 分享描述
      link, // 分享链接
      imgUrl // 分享封面
  }, function(res) {
      // console.log('自定义转发企业微信会话： ', res)
      // res.err_msg == "shareAppMessage:ok" 用户转发成功
      // res.err_msg == "shareAppMessage:cancel" 用户转发取消
      if ((!type || type === "app") && cb && typeof cb === "function") {
        setTimeout(() => {
          cb(res);
        }, 100);
      }
    }
  )
}

// 手动触发，自定义转发到微信会话
export function shareWechatMessage({ title, desc, imgUrl, link, type }, cb) {
  wx.invoke('shareWechatMessage', {
    title, // 分享标题
    desc, // 分享描述
    link, // 分享链接
    imgUrl // 分享封面
  }, function(res) {
    // console.log('自定义转发微信会话： ', res)
    // 只能知道用户调起了转发，无法得知是否已转发或取消
    if ((!type || type === "app") && cb && typeof cb === "function") {
      setTimeout(() => {
        cb(res);
      }, 100);
    }
  })
}

// 通讯录 选择企业内人员接口
export function selectEnterpriseContact({ fromDepartmentId, mode, type, selectedDepartmentIds, selectedUserIds }, cb) {
  wx.invoke('selectEnterpriseContact', {
    fromDepartmentId, // 必填，表示打开的通讯录从指定的部门开始展示，-1表示自己所在部门开始, 0表示从最上层开始
    mode, // 必填，选择模式，single表示单选，multi表示多选
    type, // ["department", "user"] 必填，选择限制类型，指定 department、user中的一个或者多个
    selectedDepartmentIds, // ["2","3"] 非必填，已选部门ID列表。用于多次选人时可重入，single模式下请勿填入多个id
    selectedUserIds // ["lisi","lisi2"] 非必填，已选用户ID列表。用于多次选人时可重入，single模式下请勿填入多个id
  }, function(res) {
    if (cb && typeof cb === "function") {
      setTimeout(() => {
        cb(res);
      }, 100);
    }
  })
}

// 通讯录 打开个人信息页接口
export function openUserProfile ({ type, userid }, cb) {
  _agentConfig(() => {
    wx.invoke('openUserProfile', {
      type, // 1表示该userid是企业成员，2表示该userid是外部联系人
      userid //可以是企业成员，也可以是外部联系人
    }, function(res) {
      if (cb && typeof cb === "function") {
        setTimeout(() => {
          cb(res);
        }, 100);
      }
    })
  })
}

// 企业微信外部联系人身份权限注入
function _agentConfig (cb) {
  if (sessionStorage.getItem('agentId') && sessionStorage.getItem('corpId')) {
    // 不区分 iOS/android
    let signLink = document.location.href.split('#')[0]
    signLink = encodeURIComponent(signLink).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+')
    get(`/wechat/cp/portal/${sessionStorage.getItem('agentId')}/agentJsSign/?url=${signLink}`).then(rsp => {
      let sign = rsp.data;
      console.log('signature: ', sign)
      wx.agentConfig({
        corpid: sessionStorage.getItem('corpId'), // 必填，企业微信的corpid，必须与当前登录的企业一致
        agentid: sessionStorage.getItem('agentId'), // 必填，企业微信的应用id （e.g. 1000247）
        timestamp: sign.timestamp, // 必填，生成签名的时间戳
        nonceStr: sign.nonceStr, // 必填，生成签名的随机串
        signature: sign.signature, // 必填，签名，见附录-JS-SDK使用权限签名算法
        jsApiList: [ //必填
          'selectExternalContact',
          'getContext',
          'getCurExternalContact',
          'getCurExternalChat',
          'sendChatMessage',
          'navigateToAddCustomer',
          'openEnterpriseChat',
          'updateEnterpriseChat',
          'shareToExternalContact',
          'shareToExternalChat',
          'launchMiniprogram',
          'openUserProfile'
        ], 
        success: function(res) {
          if (cb && typeof cb === "function") {
            setTimeout(() => {
              cb(res);
            }, 100);
          }
        },
        fail: function(res) {
          console.log('agentConfig err: ', res)
          if(res.errMsg.indexOf('function not exist') > -1){
            console.log('版本过低请升级')
          }
        }
      })
    })
  }
}

// 企业微信外部联系人身份权限注入 (外部使用)
export function agentConfig (cb) {
  return _agentConfig(cb)
}

// 获取进入H5页面的入口环境 (外部使用)
export function getContext (cb) {
  return _getContext(cb)
}

// 外部联系人 选人接口
// 调用此接口将唤起该成员里所有的外部联系人列表，获取员工选择的外部联系人的userid
// 此接口调用前，必须先调用 agentConfig
export function selectExternalContact ({filterType}, cb) {
  _agentConfig(() => {
    wx.invoke('selectExternalContact', {
      filterType // 0表示展示全部外部联系人列表，1表示仅展示未曾选择过的外部联系人。默认值为0；除了0与1，其他值非法。在企业微信2.4.22及以后版本支持该参数
    }, function(res) {
      // res.userIds ; //返回此次选择的外部联系人userId列表，数组类型
      if (cb && typeof cb === "function") {
        setTimeout(() => {
          cb(res);
        }, 100);
      }
    })
  })
}

// 获取进入H5页面的入口环境
function _getContext (cb) {
  _agentConfig(() => {
    wx.invoke('getContext', {}, function(res) {
      if(res.err_msg == "getContext:ok"){
        // res.entry 返回进入H5页面的入口类型，目前有以下四种：
        // contact_profile 从联系人详情进入
        // single_chat_tools 从单聊会话的工具栏进入
        // group_chat_tools 从群聊会话的工具栏进入
        // normal 除以上场景之外进入，例如工作台，聊天会话等
        if (cb && typeof cb === "function") {
          setTimeout(() => {
            cb(res);
          }, 100);
        }
      }else {
        console.log('getContext err: ', res)
      }
    })
  })
}

// 获取当前外部联系人 userid,
export function getCurExternalContact (cb) {
  _getContext(res => {
    // 需要从外部联系人的profile或聊天工具栏进入页面才能获取
    if (res.entry !== 'normal') {
      wx.invoke('getCurExternalContact', {}, function (res) {
        // res.userId 返回当前外部联系人userId
        if (cb && typeof cb === "function") {
          setTimeout(() => {
            cb(res);
          }, 100);
        }
      })
    }
  })
}

// 获取当前客户群的群ID
export function getCurExternalChat (cb) {
  _getContext(res => {
    // 需要从客户群的聊天工具栏进入页面时才可成功调用该接口
    if (res.entry === 'group_chat_tools') {
      wx.invoke('getCurExternalChat', {}, function (res) {
        // res.chatId 返回当前客户群的群聊ID
        if (cb && typeof cb === "function") {
          setTimeout(() => {
            cb(res);
          }, 100);
        }
      })
    }
  })
}

// 聊天工具栏分享消息到会话
export function sendChatMessage (msgtype, media, cb) {
  _getContext(res => {
    // 需要从聊天工具栏进入页面才能调用
    if (res.entry === 'group_chat_tools' || res.entry === 'single_chat_tools') {
      // 此接口支持多种消息格式，包括文本(“text”)，图片(“image”)，视频(“video”)，文件(“file”)以及H5(“news”）
      // wx.invoke('sendChatMessage', {
      //   msgtype:"text", //消息类型，必填
      //   text: { content:"你好" }, //文本内容=
      //   image: { mediaid: "" }, //图片的素材id 
      //   video: { mediaid: "" }, //视频的素材id
      //   file: {  mediaid: "" }, //文件的素材id 
      //   news: {
      //     link: "", //H5消息页面url 必填
      //     title: "", //H5消息标题
      //     desc: "", //H5消息摘要
      //     imgUrl: "", //H5消息封面图片URL
      //   }
      // }, function(res) {
      //   if (res.err_msg == 'sendChatMessage:ok') {
      //       //发送成功
      //   }
      // })
      let msg = { msgtype: msgtype }
      msg[msgtype] = media
      wx.invoke('sendChatMessage', msg, function(res) {
        if (cb && typeof cb === "function") {
          setTimeout(() => {
            cb(res)
          }, 100)
        }
      })
    }
  })
}

// 进入添加客户界面
export function navigateToAddCustomer (cb) {
  _agentConfig(() => {
    wx.invoke('navigateToAddCustomer', {}, function(res) {
      if (cb && typeof cb === "function") {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    })
  })
}

// 打开会话
export function openEnterpriseChat ({ userIds, externalUserIds, groupName, chatId }, cb) {
  wx.openEnterpriseChat({
    // 注意：userIds和externalUserIds至少选填一个。内部群最多2000人；外部群最多500人；如果有微信联系人，最多40人
    userIds, // 'zhangshan;lisi;wangwu' 参与会话的企业成员列表，格式为userid1;userid2;...，用分号隔开。
    externalUserIds, // 'wmEAlECwAAHrbWYDOK5u3Bf13xlYDAAA;wmEAlECwAAHibWYDOK5u3Af13xlYDAAA', 参与会话的外部联系人列表，格式为userId1;userId2;…，用分号隔开。
    groupName,  // 会话名称。单聊时该参数传入空字符串""即可。
    chatId, // 若要打开已有会话，需指定此参数。如果是新建会话，chatId必须为空串
    success: function(res) {
      // res.chatId 返回当前群聊ID，仅当使用agentConfig注入该接口权限时才返回chatId
      if (cb && typeof cb === "function") {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    },
    fail: function(res) {
      consolr.log('openEnterpriseChat err: ', res)
      if(res.errMsg.indexOf('function not exist') > -1){
        console.log('版本过低请升级')
      }
    }
  })
}

// 变更群成员
export function updateEnterpriseChat ({ chatId, userIdsToAdd }, cb) {
  _agentConfig(() => {
    wx.invoke('updateEnterpriseChat', {
      chatId, // 通过企业微信创建群聊接口返回的chatId
      userIdsToAdd // 'zhangshan;lisi;wangwu'  参与会话的企业成员列表，格式为userid1;userid2;...，用分号隔开。
    }, function(res) {
      if (cb && typeof cb === "function") {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    });
  })
}

// 将H5页面通过个人群发发送给客户
export function shareToExternalContact ({ title, desc, link, imgUrl }, cb) {
  _agentConfig(() => {
    wx.invoke("shareToExternalContact", {
      title, // 消息的标题
      desc, // 消息的描述
      link, // 消息链接
      imgUrl // 消息封面
    }, function(res) {
      if (cb && typeof cb === "function") {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    })
  })
}

// 将H5页面通过群发助手发送给客户群
export function shareToExternalChat ({ title, desc, link, imgUrl }, cb) {
  _agentConfig(() => {
    wx.invoke("shareToExternalChat", {
      title, // 消息的标题
      desc, // 消息的描述
      link, // 消息链接
      imgUrl // 消息封面
    }, function(res) {
      if (cb && typeof cb === "function") {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    })
  })
}

// 监听页面返回事件, 响应函数须返回布尔值false或true。false表示中断此次返回操作，否则继续执行返回操作
export function onHistoryBack (cb) {
  wx.onHistoryBack(function(){
    if (cb && typeof cb === "function") {
      setTimeout(() => {
        cb(res)
      }, 100)
    } else {
      return true
    }
  })
}

// 打开系统默认浏览器
export function openDefaultBrowser (url, cb) {
  wx.invoke('openDefaultBrowser', {
    url // "https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&agentid=AGENTID&state=STATE#wechat_redirect", // 在默认浏览器打开redirect_uri，并附加code参数；也可以直接指定要打开的url，此时不会附带上code参数。
  }, function (res) {
    if (cb && typeof cb === "function") {
      setTimeout(() => {
        cb(res)
      }, 100)
    }
  });
}

// 用户截屏事件
export function onUserCaptureScreen (cb) {
  wx.onUserCaptureScreen({
    complete: res => {
      console.log('==== onUserCaptureScreen complete ===: ', res)
      if (cb && typeof cb === 'function') {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    }
  })
}

// 企业微信扫一扫
export function scanQRCode ({ desc, needResult, scanType }, cb) {
  wx.scanQRCode({
    desc, // 'scanQRCode desc',
    needResult, // 默认为0，扫描结果由企业微信处理，1则直接返回扫描结果，
    scanType, // ["qrCode", "barCode"], 可以指定扫二维码还是条形码（一维码），默认二者都有
    success: function (res) {
      if (cb && typeof cb === 'function') {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    },
    error: function (res) {
      console.log('scanQRCode err: ', res)
      if (res.errMsg.indexOf('function_not_exist') > 0) {
        console.log('版本过低请升级')
      }
    }
  })
}

// 快速跳转到认证界面
export function enterpriseVerify (cb) {
  wx.invoke('enterpriseVerify', {}, function(res) {
    if (cb && typeof cb === 'function') {
      setTimeout(() => {
        cb(res)
      }, 100)
    }
  })
} 

// 跳转到小程序
export function launchMiniprogram ({ appid, path }, cb) {
  _agentConfig(() => {
    wx.invoke('launchMiniprogram', {
      appid, // "wx062aaa5507909631"  需跳转的小程序appid
      path // "pages/home/index.html", // 所需跳转的小程序内页面路径及参数。非必填
    }, function(res) {
      if (cb && typeof cb === 'function') {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    })
  })
}

// 获取网络状态
export function getNetworkType (cb) {
  wx.getNetworkType({
    success: function (res) {
      // res.networkType; 返回网络类型 2g，3g，4g，wifi，none
      if (cb && typeof cb === 'function') {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    }
  })
}

// 监听网络状态变化
export function onNetworkStatusChange (cb) {
  wx.onNetworkStatusChange(function(res) {
    // res.isConnected
    // res.networkType
    if (cb && typeof cb === 'function') {
      setTimeout(() => {
        cb(res)
      }, 100)
    }
  })
}

// 使用企业微信内置地图查看位置
export function openLocation ({ latitude, longitude, name, address, scale }) {
  wx.openLocation({
    latitude, // 纬度，浮点数，范围为90 ~ -90
    longitude, // 经度，浮点数，范围为180 ~ -180。
    name, // 位置名
    address, // 地址详情说明
    scale // 地图缩放级别,整形值,范围从1~28。默认为16
  })
}

// 获取地理位置
export function getLocation (type, cb) {
  wx.getLocation({
    type, // 默认为 wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
    success: function (res) {
      // res.latitude; 纬度，浮点数，范围为90 ~ -90
      // res.longitude; 经度，浮点数，范围为180 ~ -180。
      // res.speed; 速度，以米/每秒计, 企业微信App不支持speed参数，输出固定为0
      // res.accuracy; 位置精度
      if (cb && typeof cb === 'function') {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    }
  })
}

// 打开持续定位
export function startAutoLBS (type, cb) {
  wx.invoke('startAutoLBS', {
    type // wgs84是gps坐标，gcj02是火星坐标
  }, function(res) {
    if (cb && typeof cb === 'function') {
      setTimeout(() => {
        cb(res)
      }, 100)
    }
  })
}

// 停止持续定位
export function stopAutoLBS (cb) {
  wx.invoke('stopAutoLBS', {}, function(res) {
    if (cb && typeof cb === 'function') {
      setTimeout(() => {
        cb(res)
      }, 100)
    }
  })
}

// 监听地理位置变化
export function onLocationChange (cb) {
  wx.onLocationChange(
    function (res) {
      // res.latitude 纬度，浮点数，范围为90 ~ -90
      // res.longitude 经度，浮点数，范围为180 ~ -180。
      // res.speed 速度，以米/每秒计
      // res.accuracy 位置精度
      // lbsIndex = 0
      if (cb && typeof cb === 'function') {
        setTimeout(() => {
          cb(res)
        }, 100)
      }
    }
  )
}





